<?php
/**
 * Description of queryresultclass
 *
 * @author del Valle, Federico <quaidy@gmail.com>
 */
class queryResultset {
  private $filas =0;
  private $error = true;
  private $errorNro = "";
  private $errorMessage = "";
  private $last_insert_id = false;
  private $pointer = null;
  private $success = false;
  
  public function __construct($rs = null) {
    if ($rs != null && $rs != false) {
      $this->error = false;
      $this->success = true;

      //Fue un insert
      if ($rs===true) {
        $this->pointer = null;
        $this->filas = mysql_affected_rows();
        $this->last_insert_id = mysql_insert_id();
      } else {
        $this->pointer = $rs;
        $this->filas = (int)mysql_num_rows($this->pointer);
      }
    } else {
      $this->error = true;
      $this->errorMessage = mysql_error();
      $this->errorNro = mysql_errno();
    }
  }

  /**
   * Devuelve el resultado en crudo
   *
   * @return Result
   */
  public function get_pointer() {
    return $this->pointer;
  }

  /**
   * Obtiene una fila del resultado (array asociativo x default)
   *
   * @param String $mode Tipo de resultado assoc|object|array
   * @return Row | false
   */
  public function get_row($mode = "assoc") {
    if ($this->pointer != null) {
       switch ($mode) {
         case "array":
           return mysql_fetch_array($this->pointer);
           break;
         case "object":
           return mysql_fetch_object($this->pointer);
           break;
         case "assoc":
         default:
           return mysql_fetch_assoc($this->pointer);
           break;
       }
    } else {
      return false;
    }
  }

   /**
   * Obtienetodas las filas del resultado (array asociativo x default)
   *
   * @param String $mode Tipo de resultado assoc|object|array
   * @return array | false
   */
  public function get_rows($mode = "assoc") {
    if ($this->has_rows()) {
      $return = array();
      while (($row = $this->get_row($mode))!=false) {
        $return[] =$row;
      }
      return $return;
    } else {
      return false;
    }
  }
  /**
   * Cantidad de filas en el resultset ya sea de un SELECT como de un INSERT,UPDATE
   *
   * @return int
   */
  public function affected_rows() {
    return $this->filas;
  }
  
  /**
   * Ocurrio un error en la query?
   *
   * @return Boolean
   */
  public function error() {
    return $this->error;
  }

  /**
   * Confirma si la ultima consulta tubo exito o no
   * @return boolean
   */
  public function exito() {
    return $this->success;
  }

  public function inserted_id() {
    return $this->last_insert_id;
  }

  public function has_rows() {
    
    if ($this->success && $this->filas >0 ) {
      return true;
    } else {
      return false;
    }
  }

  
}
?>
